package com.learn.proxy;

/**
 * <p>项目名称: design-pattern </p>
 *
 * <p>文件名称: App </p>
 *
 * A proxy, in its most general form, is a class functioning as an interface to something else. The
 * proxy could interface to anything: a network connection, a large object in memory, a file, or
 * some other resource that is expensive or impossible to duplicate. In short, a proxy is a wrapper
 * or agent object that is being called by the client to access the real serving object behind the
 * scenes.
 * <p>
 * The Proxy design pattern allows you to provide an interface to other objects by creating a
 * wrapper class as the proxy. The wrapper class, which is the proxy, can add additional
 * functionality to the object of interest without changing the object's code.
 * <p>
 * In this example the proxy ({@link Proxy}) controls access to the actual object ({@link Proxyed}).
 */
public class App {

    public static void main(String[] args) {
        Data data = new Data();
        data.setDetail("111111");
        Proxy proxy = new Proxy(new Proxyed());
        proxy.consume(data);
    }
}
